// Package config -----------------------------
// @file      : allRoomConfig.go
// @author    : WuZhouHai
// @contact   : wzh200x@126.com
// @time      : 2024/7/17 13:59
// @desc      :
// -------------------------------------------
package config

import (
	"context"
	"github.com/gogf/gf/v2/encoding/gjson"
	"phoenix/apps/examples/phoenix_app_dwys/model/gameConfig"
	"phoenix/phoenix/base"
	"phoenix/phoenix/common/logger"
	"phoenix/phoenix/interfaces"
)

type AllRoomConfig struct {
	base.BaseLogicConfig
}

func (this *AllRoomConfig) InitLogicConfig() {
	fileData, err := this.LoadConfigFile()
	if err != nil {
		logger.PhoenixLoggerIns().Errorf("Config load config %s error: %s", this.GetFileName(), err)
		return
	}
	if j, err := gjson.DecodeToJson(fileData); err != nil {
		logger.PhoenixLoggerIns().Errorf("Config decode config %s error: %s", this.GetFileName(), err)
	} else {
		var configs []gameConfig.AllRoom
		if err := j.Scan(&configs); err != nil {
			logger.PhoenixLoggerIns().Errorf("Config scan config %s error: %s", this.GetFileName(), err)
		}
		for i, config := range configs {
			this.SetConfigItem(config.Id, &configs[i])
		}
	}
}

func NewAllRoomConfig(configName string, configFile string, ctx context.Context) (interfaces.ILogicConfig, error) {
	return &AllRoomConfig{
		BaseLogicConfig: base.NewBaseLogicConfig(configName, configFile, ctx),
	}, nil
}
